//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080/'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios
//====axios的前置拦截器:作用，每次访问后台【都是使用axios发送请求的】，都要将token携带到后端====
axios.interceptors.request.use(res=>{
    //从浏览器中获取token
    let token = localStorage.getItem("token");
    if(token){
        //将token添加到请求头
        res.headers["token"] = token;
    }
    return res;//语法格式，必须返回
})
//======================axios的前置拦截器====================//
//====axios的后置拦截器：作用，对后端响应的错误的json数据【没有登录，获取过期】做处理====
axios.interceptors.response.use(res => {
    //后端响应的是没有登录的信息
    if (false === res.data.success && "noLogin" === res.data.message) {
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        location.href = "/login.html";
    }else if(false === res.data.success && "timeout" === res.data.message) {
        alert("登录超时，请重新登录");
        //删除localStorage的token和logininfo
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        //跳转到登录页面
        location.href = "/login.html";
    }
    return res;
},error => {
    Promise.reject(error)
})
//======================axios的后置拦截器====================//
// ====前端拦截器：拦截不经过后端代码的请求【前端的有些页面是需要登录之后才能访问的】====//
let url = location.href;//http://localhost/login.html
let path = url.substring(url.lastIndexOf("/"));
//alert(url);//http://localhost/index.html
//如果不是登录页面并且也不是注册页面【为了测试：假如index.html是需要登录之后才能访问的】
if(path != "/login.html" && path != "/register.html" && path.indexOf("/binder.html")==-1 && path.indexOf("/callback.html")==-1){
    let logininfo = localStorage.getItem("logininfo");
    if(!logininfo){//如果访问的不是登录页面和注册页面，并且loginInfo没有值【没有登录或过期】
        location.href = "/login.html";
    }
}
//==========================前端拦截器=======================//
function parseUrlParams2Obj(url){//xxx?code=1111&state=222
    var obj = {};
    let params = url.substring(url.indexOf("?")+1);//code=1111&state=222
    let paramsArr = params.split("&")//[code=1111,state=222]
    for(var i =0;i<paramsArr.length;i++){
        let param = paramsArr[i];//每一个值
        let paramArr = param.split("=");//[]code,111]
        //对象的属性名 = 属性值
        obj[paramArr[0]]=paramArr[1];
    }
    return obj;
}
